/**
 * PageLayout.js
 * 提供通用的页面布局组件，包含顶部导航栏和侧边栏
 */
class PageLayout {
  constructor() {
    this.topNavBar = null;
    this.sideBar = null;
  }

  /**
   * 初始化页面布局
   * @param {String} activeMenuItem - 当前活动的菜单项
   */
  init(activeMenuItem = '') {
    // 检查用户是否已登录
    if (this.checkAuthentication()) {
      // 初始化顶部导航栏
      this.topNavBar = new TopNavBar();
      this.topNavBar.init();
      
      // 初始化侧边栏
      this.sideBar = new SideBar();
      this.sideBar.init(activeMenuItem);
      
      // 给内容区域添加页脚
      this.addFooter();
    }
  }

  /**
   * 检查用户是否已认证
   * @returns {Boolean} 如果认证成功则返回true，否则跳转到登录页面并返回false
   */
  checkAuthentication() {
    // 检查是否有认证令牌
    const cookies = document.cookie.split(';');
    let hasToken = false;
    
    for (let i = 0; i < cookies.length; i++) {
      const cookie = cookies[i].trim();
      if (cookie.startsWith('virtualbank_token=')) {
        hasToken = true;
        break;
      }
    }
    
    // 如果没有认证令牌且不在登录或注册页面，则重定向到登录页面
    const currentPath = window.location.pathname;
    if (!hasToken && 
        !currentPath.includes('/login.html') && 
        !currentPath.includes('/register.html') &&
        !currentPath.includes('/forgot-password.html')) {
      window.location.href = '/login.html';
      return false;
    }
    
    return true;
  }
  
  /**
   * 添加页脚
   */
  addFooter() {
    // 检查是否已经存在页脚
    if (document.querySelector('.footer')) return;
    
    // 创建页脚元素
    const footerElement = document.createElement('div');
    footerElement.className = 'footer';
    footerElement.innerHTML = `
      <div class="footer-links">
        <a href="#" class="footer-link">关于我们</a>
        <a href="#" class="footer-link">帮助中心</a>
        <a href="#" class="footer-link">隐私政策</a>
        <a href="#" class="footer-link">用户协议</a>
        <a href="#" class="footer-link">联系我们</a>
      </div>
      <div class="footer-copyright">
        &copy; ${new Date().getFullYear()} 虚拟银行系统 版权所有
      </div>
    `;
    
    // 将页脚添加到内容区域的后面
    const contentElement = document.querySelector('.content');
    if (contentElement) {
      contentElement.appendChild(footerElement);
    }
  }
}

// 导出以供其他文件使用
window.PageLayout = PageLayout;
